package com.sdry.mapper.lz;

import com.sdry.model.llm.DeliveryNode;
import com.sdry.model.lz.*;
import com.sdry.model.zc.ZcMaterielAndTrayEntity;
import com.sdry.model.zc.ZcTrayAndLocationEntity;

import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * @ClassName CarMapper
 * @Description 车辆信息
 * @Author lz
 * @Date 2019年4月16日 10:11:34
 * @Version 1.0
 */
public interface CarMapper {

    Long addCar(Car car);

    Long deleteCarById(long id);

    Long updateCar(Car car);

    List<Car> queryCarCriteria(LzQueryCriteria criteria);

    int countCarCriteria(LzQueryCriteria criteria);
    
    /**
     * 根据条码查询该条码是否存在
     * @param response
     * @param beforeCode 原条码
     */
    CodeMark queryCodeExist(String beforeCode);
    
    /**
	 * 修改条码
	 * @param beforeCode 原条码
	 * @param newCode 新条码
	 * @return
	 */
	Long editCode(@Param("beforeCode")String beforeCode, @Param("newCode")String newCode);

	/**
	 * 用新条码替换旧条码
	 * @param zcMaterielAndTrayEntity
	 * @return
	 */
	int updateCodeByid(ZcMaterielAndTrayEntity zcMaterielAndTrayEntity);

	/**
	 * 验证是否已存在
	 * @param newCode 新条码
	 * @return
	 */
	int checkNewCode(String newCode);

	/**用空字符串替换此库位中的指定的托盘码*/
	int updateTrayCodeByid(ZcTrayAndLocationEntity zcTrayAndLocationEntity);
	
	Long receiveVehicleTransInfo(VehicleTransInfo vehicleTransInfo);

	/**
	 * 根据出库单id查询车辆的经纬度
	 * @param outstock_order_id 出库单id
	 */
	List<VehicleTransInfo> queryVehicleTransInfoByOutStockId(String outstock_order_id);

	/**
	 * 查询正在配送的的出库单
	 */
	List<DeliveryNode> queryDeliveryNodeByStatus();

	/**
	 * 查询已配送完成的出库单
	 */
	List<DeliveryNode> queryDeliveryNodeByStatus2();

	/**
	 * 根据出库单id查询车辆的经纬度
	 * @param outstock_order_id 出库单id
	 */
	List<VehicleTransInfo> queryVehicleTransInfoByOutStockId2(String outstock_order_id);

	/**
	 * 根据出库单号查询对应的车牌号
	 * @param id 配送单id
	 */
	List<String> queryPlateByOutStockId(String id);

	/**
	 * 查询未出库的出库单
	 */
	List<LoadingAppEntity> queryOutStockOrderByStatusForPDA();

	/**
	 * 车辆油耗新增
	 */
	Long addVehicleFuel(VehicleFuel vehicleFuel);

	/**
	 * 根据ID删除该行数据
	 */
	Long deleteVehicleFuelById(long id);

	/**
	 * 修改车辆油耗信息
	 * @param vehicleFuel
	 * @return
	 */
	Long updateVehicleFuel(VehicleFuel vehicleFuel);

	/**
	 * 分页查询车辆油耗信息
	 * @param criteria
	 * @return
	 */
	List<Car> queryVehicleFuelCriteria(LzQueryCriteria criteria);

	/**
	 * 分页查询车辆油耗信息的数量
	 * @param criteria
	 * @return
	 */
	int countVehicleFuelCriteria(LzQueryCriteria criteria);

	/**
	 * 查询该配送单下的所有出库单
	 * @param deliveryId
	 * @return
	 */
	List<OutStockOrder> queryOutStockStockOrderByDeliveryNodeId(Long deliveryId);
}
